#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>

void DrawNum() {
    // 实现绘制逻辑
    printf("Drawing...\n");
}

int main() {
    struct termios old_tio, new_tio;
    char ch;

    // 保存原始终端设置
    tcgetattr(STDIN_FILENO, &old_tio);
    new_tio = old_tio;
    new_tio.c_lflag &= ~(ICANON);  // 关闭规范模式

    // 应用新的终端设置
    tcsetattr(STDIN_FILENO, TCSANOW, &new_tio);

    while (1) {
        // 使用 select() 检查是否有输入可用（非阻塞方式）
        struct timeval tv = {0, 0};// 新增的
        fd_set fds;
        FD_ZERO(&fds);
        FD_SET(STDIN_FILENO, &fds);
        if (select(STDIN_FILENO + 1, &fds, NULL, NULL, &tv) > 0) {
            ch = getchar();
            if (ch == 'q' || ch == 'Q') {
                printf("Exiting the program.\n");
                break;
            }
        }

        // 执行需要定时调用的函数
        DrawNum();  // 假设DrawNum()已经实现

        // 等待 300 毫秒（Linux 上使用 usleep）
        usleep(300000);  // 1,000,000 微秒 = 1 秒，这里改为 300,000 微秒（0.3 秒）
    }

    // 恢复原始终端设置
    tcsetattr(STDIN_FILENO, TCSANOW, &old_tio);
    return 0;
}